Generally described, in a database environment, a connection pool operates as a cache of connection objects, each of which represents a connection that can be used by a software application to connect to a database. At runtime, an application can request a connection from the connection pool. If the connection pool includes a connection that can satisfy the particular request, it can return that connection to the application for its use. In some instances, if no suitable connection is found, then a new connection can be created and returned to the application. The application can borrow the connection to access the database and perform some work, and then return the connection to the pool, where it can then be made available for subsequent connection requests from the same, or from other, applications.